﻿
namespace Oddo.Concept.Crm.Common.Diagnostic
{
    using System;
    /// <summary>
    /// Contract d'interface du gestionnaire de rapport d'erreur
    /// </summary>
    public interface IErrorReportManager
    {
        /// <summary>
        /// Envoie un rapport d'erreur
        /// </summary>
        /// <param name="report">Une instance de type IErrorReport</param>
        void SendErrorReport(IErrorReport report);
        /// <summary>
        /// Envoie un rapport d'erreur de manière asynchrone
        /// </summary>
        /// <param name="report">Une instance de type IErrorReport</param>
        void SendErrorReportAsync(IErrorReport report);
        /// <summary>
        /// Obtient ou définit si le rapport d'erreur peut être envoyé
        /// </summary>
        bool ShouldSendReport { get; set; }
        /// <summary>
        /// Créé une nouvelle instance de type IErrorReport depuis une exception
        /// </summary>
        /// <param name="exception">Uen instance de type Exception</param>
        /// <returns>Uen nouvelle instance de type IErrorReport</returns>
        IErrorReport CreateReportFromException(Exception exception);
    }
}